SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
CREATE PROCEDURE [dbo].[spGenerarPlantaXEDU]
@Cuise INT
AS

/********************************************** PRIMERO: SE GENERAN LAS PLAZAS *********************************************************/
/* Solo se tiene en cuenta aquellas plazas del cuise deseado que este presente en algun subservicio abierto */
SET NOCOUNT ON
Set Dateformat dmy

Declare @BDid Varchar(10), @BDCuise Int, @Cupof Varchar(50), @Cargo Int, @Modalidad Int, @Curso Int, @Division Varchar(2),
	@Asignatura Int, @Horas Int, @FechaCreacion Varchar(10), @Turno Varchar(1), @Edificio Varchar(50),
	@Partida Varchar(10), @Cerrado Varchar(1), @FechaCierre Datetime, @Estado Varchar(3), @Alumnos Int,
	@Financiamiento Int, @NormaCierre Varchar(50), @Sql Varchar(8000), @CargoString varchar(10), @CargoSalarial Int, @CargoSalarialString Varchar(10)

Declare plazas cursor for
Select 
(Select convert(varchar,day(getdate()))+'/'+convert(varchar, month(getdate()))+'/'+convert(varchar, year(getdate()))), 
Cuise,
Cupof,
Funcion,
(Select modalidad from tb_SubOrganizaciones Where idSubOrganizacion = SubOrganizacion),
(Select Convert(int, Curso) from tb_Divisiones Where idDivision = p.Division),
(Select Convert(varchar(2), d.Division) from tb_Divisiones d Where idDivision = p.Division),
Asignatura,
Horas,
convert(varchar, day(p.FechaAlta))+'/'+convert(varchar, month(p.FechaAlta))+'/'+convert(varchar, year(p.FechaAlta)),(Select mnemo from tb_Turnos where idTurno = p.Turno),
Null,
Null,
Null,
'N',
Null,
Null,
Null,
Null,
P.CargoSalarialDefault
From tb_Plazas P, tb_SubServiciosAgentes ss where 
cuise = @Cuise And idPlaza = Plaza and ss.FechaBaja is Null


Open plazas
Fetch Next From plazas Into @Bdid, @BDCuise, @Cupof, @Cargo, @Modalidad, @Curso, @Division, @Asignatura, @Horas,
	@FechaCreacion, @Turno, @Edificio, @Financiamiento, @Partida, @Cerrado, @FechaCierre, @NormaCierre, @Estado, @Alumnos, @CargoSalarial

While @@Fetch_Status = 0
Begin
	If @Cargo Is Null
		Select @CargoString = 'Null'
	Else	
		Select @CargoString = Convert(Varchar(10), @Cargo)
	If @CargoSalarial Is Null
		Select @CargoSalarialString = 'Null'
	Else
		Select @CargoSalarialString = Convert(Varchar, @CargoSalarial)

	Select @sql = ''
	Select @sql = 'INSERT INTO Plazas '
	Select @sql = @sql + 'VALUES ("'+Convert(Varchar,@BDid)+'",'+Convert(Varchar, @BDCuise)+', "'+@Cupof+'", '
	Select @sql = @sql + Convert(Varchar, @BDCuise)+', '+@CargoString+', '+Convert(Varchar, @Modalidad)+', '
	Select @sql = @sql + Convert(Varchar, isNull(@Curso,-1))+', "'+isNull(@Division,-1)+'", '+Convert(Varchar, @Asignatura)+', '
	Select @sql = @sql + Convert(Varchar, @Horas)+', "'+Convert(Varchar, @FechaCreacion)+'", "'+@Turno+'", '
	Select @sql = @sql + 'Null, Null, Null, "N", Null, Null, Null, Null, Null, Null, Null, Null, Null, Null, Null, ' +@CargoSalarialString + ')' 

	print @sql

	Fetch Next From plazas Into @Bdid, @BDCuise, @Cupof, @Cargo, @Modalidad, @Curso, @Division, @Asignatura, @Horas,
	@FechaCreacion, @Turno, @Edificio, @Financiamiento, @Partida, @Cerrado, @FechaCierre, @NormaCierre, @Estado, @Alumnos, @CargoSalarial
	
End

Close Plazas
Deallocate Plazas

/********************************************** SEGUNDO: SE GENERAN LOS AGENTES  *********************************************************/

declare @Documento int, @Nombre varchar(50), @FNacimiento varchar(10), @Sexo varchar(1), 
	@Domicilio varchar(100), @Telefono varchar(20), @Localidad varchar(50) 

declare Agentes cursor for 
Select convert(varchar,day(getdate()))+'/'+convert(varchar, month(getdate()))+'/'+convert(varchar, year(getdate())), 
Documento, Nombres, convert(varchar, day(FechaNacimiento))+'/'+convert(varchar, month(FechaNacimiento))+'/'+convert(varchar, year(FechaNacimiento)),
 Case Sexo When 1 Then 'M' else 'F' end, Domicilio, Telefono, l.Localidad
From tb_Agentes a, tb_Localidades l, tb_ServiciosAgentes s, tb_SubServiciosAgentes ss, tb_Plazas p 
Where l.idLocalidad = a.Localidad and idServicioAgente = ServicioAgente and idPlaza = Plaza and idAgente = Agente
and p.cuise = @Cuise and ss.fechabaja is null

open Agentes
fetch next from Agentes into @Bdid, @Documento, @Nombre, @FNacimiento, @Sexo, @Domicilio, @Telefono, @Localidad

while @@fetch_status = 0
begin
	Select @Sql = null
	Select @Sql = 'INSERT INTO Legajos '
	Select @Sql = @Sql + 'VALUES ("'+convert(varchar, @BDid)+'", '+convert(varchar, @BDCuise)+', '
	Select @Sql = @Sql + convert(varchar, @Documento)+', "'+@Nombre+'", "'+convert(varchar, @FNacimiento)+'", "'
	Select @Sql = @Sql + @Sexo + '", '+'Null, "'+@Domicilio+'", "'+@Localidad+'", "'+@Telefono+'", '+'Null, Null, Null, Null, Null, Null)'	
	print @Sql
	fetch next from Agentes into @Bdid, @Documento, @Nombre, @FNacimiento, @Sexo, @Domicilio, @Telefono, @Localidad
end

close Agentes 
deallocate Agentes

/********************************************** TERCERO: SE GENERAN LOS SERVICIOS *********************************************************/

Declare @ids int, @sitrev varchar(1), @FechaAlta varchar(10), @Baja varchar(1), @NormaAlta varchar(50),
	@NormaBaja varchar(50), @Afiliacion int, @sitlab varchar(2), @sitext varchar(2),
	@Desde varchar(10), @Hasta varchar(10), @Licencia int, @CupofDestino varchar(50), @HastaSS varchar(12)

declare servicios cursor for 
Select convert(varchar,day(getdate()))+'/'+convert(varchar, month(getdate()))+'/'+convert(varchar, year(getdate())), 
	idServicioAgente, Documento, CargoSalarial, SR.Mnemo, 
	Convert(Varchar, Day(S.FechaAlta))+'/'+Convert(Varchar, Month(S.FechaAlta))+'/'+Convert(Varchar, Year(S.FechaAlta)), 'N',  
	Af.NumeroAfiliado, S.Horas, p.Cupof, SL.Mnemo, SE.Mnemo, SS.Licencia,
	Null,
	--Case SL.Mnemo When 'LE' Then (Select Cupof From tb_RelInterServicios, tb_ServiciosAgentes s2, tb_SubServiciosAgentes ss2
	--	Where idServicio2 = s.idServicioAgente 	
	--	And idServicio = s2.idServicioAgente And s2.idServicioAgente = ss2.ServicioAgente 
	--	And ss2.FechaAlta = (Select max(FechaAlta) From tb_SubServiciosAgentes Where ServicioAgente = s2.idServicioAgente))
	--Else Null End CupofDestino,
	NAlta.Descripcion,
	Convert(Varchar, Day(SS.FechaAlta))+'/'+Convert(Varchar, Month(SS.FechaAlta))+'/'+Convert(Varchar, Year(SS.FechaAlta)),
	Convert(Varchar, Day(SS.FechaBaja))+'/'+Convert(Varchar, Month(SS.FechaBaja))+'/'+Convert(Varchar, Year(SS.FechaBaja))	
From tb_ServiciosAgentes s, tb_SubServiciosAgentes ss, tb_Plazas p, tb_SituacionRevista SR, tb_Afiliaciones AF,
	tb_SituacionesLaborales SL, tb_SituacionesExtraordinarias SE, tb_Agentes A, tb_Normas NAlta
Where p.Cuise = @Cuise And idServicioAgente = ServicioAgente And idPlaza = Plaza 
	--And ss.FechaAlta = (Select max(FechaAlta) From tb_SubServiciosAgentes where ServicioAgente = idServicioAgente)
	And s.SituacionRevista = SR.idSituacionRevista
	And ss.SituacionLaboral = SL.idSituacionLaboral
	And ss.SituacionExtraordinaria = SE.idSituacionExtraordinaria
	And s.Agente = AF.idAgente
	And s.Agente = A.idAgente
	And s.FechaBaja Is Null
	And s.NormaAlta *= NAlta.idNorma

Open Servicios
Fetch Next From Servicios Into @BDid, @ids, @Documento, @CargoSalarial, @SitRev, @FechaAlta, @Baja, 
	@Afiliacion, @Horas, @Cupof, @SitLab, @SitExt, @Licencia, @CupofDestino, @NormaAlta, @Desde, @HastaSS

While @@Fetch_Status = 0
Begin
	If @HastaSS Is Null
		Select @HastaSS = 'Null'
	Else
		Select @HastaSS = '"'+@HastaSS+'"' 

	Select @Sql = Null
	Select @Sql = 'INSERT INTO SERVICIOS '
	Select @Sql = @Sql + 'VALUES ("'+@BDid+'", '+Convert(Varchar, @BDCuise)+', '+Convert(Varchar, @Ids)+', '
	Select @Sql = @Sql + Convert(Varchar, @Documento) +', '+Convert(Varchar, isNull(@CargoSalarial,-1))+', "'+@SitRev+'", "'
	Select @Sql = @Sql + @FechaAlta+'", "'+@Baja+'", Null, "'+IsNull(@NormaAlta, 'S/N')+'", Null, '+Convert(Varchar, @Afiliacion)+', '
	Select @Sql = @Sql + Convert(Varchar, @Horas)+', Null, Null, "'+@Cupof+'", "'+@SitLab+'", "'+@SitExt+'", "'
	Select @Sql = @Sql + @Desde+'", "N", ' + @HastaSS+', ' +Convert(Varchar, isNull(@Licencia,-1))+', "'+isNull(@CupofDestino, 'S/D')+'", Null)'
  
	Print @Sql

	Fetch Next From Servicios Into @BDid, @ids, @Documento, @CargoSalarial, @SitRev, @FechaAlta, @Baja, 
		@Afiliacion, @Horas, @Cupof, @SitLab, @SitExt, @Licencia, @CupofDestino, @NormaAlta, @Desde, @HastaSS
	
End

Close Servicios
Deallocate Servicios

/************************************************************ DIVISIONES **********************************************************/
Declare @Mod Varchar(50), @DMnemo Varchar(20), @idDivision Int, @DCurso Varchar(4)

Declare Divisiones Cursor For 
Select idDivision, D.Mnemo, M.Descripcion, T.Mnemo, Curso, Division
From tb_Divisiones D, tb_GrupoDeCarreras M, tb_Turnos T
Where D.Turno = T.idTurno And D.grupocarreras = M.idGrupoCarrera And Cuise = @Cuise
	And Curso > '0'

Open Divisiones
Fetch Next From Divisiones Into @idDivision, @DMnemo, @Mod, @Turno, @DCurso, @Division
/*Print 'DELETE FROM Division'*/
While @@Fetch_Status = 0
Begin
	Select @Sql = 'INSERT INTO Division VALUES('
	Select @Sql = @Sql + Convert(Varchar, @idDivision) + ', "' 
	Select @Sql = @Sql + @DMnemo  + '", "'
	Select @Sql = @Sql + @Mod + '", "'
	Select @Sql = @Sql + @Turno + '", "'
	Select @Sql = @Sql + @DCurso + '", "'
	Select @Sql = @Sql + @Division + '")'
	Print @Sql
	Fetch Next From Divisiones Into @idDivision, @DMnemo, @Mod, @Turno, @DCurso, @Division
End

Close Divisiones
Deallocate Divisiones



/************************************************ CARACTERITICAS **************************************************************


Declare @idCaracteristica int, @CDescripcion varchar(50), @TDescripcion varchar(50), @SDescripcion varchar(50),
	@VDescripcion varchar(50)

Declare Caracteristicas Cursor For
Select idCaracteristica, TC.descripcion, SC.descripcion, TV.descripcion, Caracteristica 
From tb_Caracteristicas C, tb_TiposCaracteristicas TC, tb_SubTiposCaracteristicas SC, tb_TiposDeValor TV
Where idTipoCaracteristicas = C.TipoCaracteristica And SubTipo = IdSubtipo And TipoValor = idTipoValor

Open Caracteristicas
Fetch Next From Caracteristicas Into @idCaracteristica, @TDescripcion, @SDescripcion, @VDescripcion, @CDescripcion

While @@Fetch_Status = 0
Begin
	Select @Sql = 'INSERT INTO Caracteristicas VALUES ('
	Select @sql = @sql + Convert(Varchar, @idCaracteristica)+', "'
	Select @sql = @sql + @CDescripcion + '", "' + @TDescripcion + '", "' + @SDescripcion + '", "' 
	Select @sql = @sql + @VDescripcion + '")'
	print @sql
	Select @Sql = ''
	Fetch Next From Caracteristicas Into @idCaracteristica, @CDescripcion, @TDescripcion, @SDescripcion, @VDescripcion
End

Close Caracteristicas
Deallocate Caracteristicas

************************ VALORES DE CARACTERISTICAS *****************************

Declare @idValor Int, @Caracteristica Varchar(50), @Valor Varchar(30)
Declare Valores Cursor For
Select idValorCaracteristica, C.Caracteristica, Valor 
From tb_ValoresCaracteristicas VC, tb_Caracteristicas C Where idCaracteristica = VC.Caracteristica

Open Valores
Fetch Next From Valores Into @idValor, @Caracteristica, @Valor

While @@Fetch_Status = 0
Begin
	Select @Sql = 'INSERT INTO ValoresDeCaracteristicas VALUES('
	Select @Sql = @Sql + Convert(Varchar, @idValor) + ', "' + @Caracteristica
	Select @Sql = @Sql + '", "' + @Valor + '")'
	Print @Sql
	Fetch Next From Valores Into @idValor, @Caracteristica, @Valor
End

Close Valores
Deallocate Valores
*/
GO
